<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /* // 数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法

    // 一、基本语法：
    // 1.赋值运算符 = 左侧 [] 用于批量声明变量，右侧数组的单元值将被赋值给左侧的变量
    // 2.变量的顺序对应数组单元值的位置依次进行赋值操作
    const arr = [100, 60, 80]
    // 数组解构 赋值
    // const [max, min, avg] = arr
    const [max, min, avg] = [100, 60, 80]
    // const arr[0] = max
    // const arr[1] = min
    // const arr[2] = avg
    console.log(max)  //100
    console.log(min)  //60
    console.log(avg)  //80 */


    /* // 典型运用：交互两个变量
    let a = 1
    let b = 2
      ;[b, a] = [a, b]  //记得加分号即可
    console.log(a, b) */


    /* // 练习
    function getValue() {
      return [100, 60]
    }
    const [max, min] = getValue()
    console.log(max)
    console.log(min) */



    // 二、细节
    // 1.变量多，单元值少   多的那些是undefined
    // const [a, b, c, d] = [1, 2, 3]
    // console.log(a)  // 1
    // console.log(b)  // 2
    // console.log(c)  // 3
    // console.log(d)  // undefined
    // 2.变量少，单元值多，无影响
    // const [a, b] = [1, 2, 3, 4]
    // console.log(a)  // 1
    // console.log(b)  // 2
    // 3.变量少，单元值多    剩余参数解决
    // const [a, b, ...c] = [1, 2, 3, 4]
    // console.log(a)  // 1
    // console.log(b)  // 2
    // console.log(c)  // [3, 4] 真数组
    // 4.防止undefined传递单元的情况，可以设置默认值
    // const [a = 0, b = 0] = []
    // console.log(a)  // 0
    // console.log(b)  // 0
    // 5.按需导入赋值，忽略某些返回值
    // const [a, b, , d] = [1, 2, 3, 4]
    // console.log(a)  // 1
    // console.log(b)  // 2
    // console.log(d)  // 4
    // 6.支持多维数组的解构
    // const [a, b, c] = [1, 2, [3, 4]]
    // console.log(a)  // 1
    // console.log(b)  // 2
    // console.log(c)  // [3, 4]

    const [a, b, [c, d]] = [1, 2, [3, 4]]  // 二维
    console.log(a)  // 1
    console.log(b)  // 2
    console.log(c)  // 3
    console.log(d)  // 4

    const [e, f, [[g, h], i]] = [10, 20, [[30, 40], 50]]  // 三维
    console.log(g)  // 30
  </script>
</body>

</html>